/**
 *====================================================
 * 文件名称: ContainerInventoryService.java
 * 修订记录：
 * No    日期				作者(操作:具体内容)
 * 1.    2015年09月23日	chenxy(创建:创建文件)
 *====================================================
 * 类描述：(说明未实现或其它不应生成javadoc的内容)
 */
package com.yuexunit.finance.project.service;

import java.util.Date;
import java.util.List;

import com.yuexunit.finance.project.entity.ContainerInventoryEntity;
import com.yuexunit.finance.project.entity.DeliveryNoticeEntity;
import com.yuexunit.finance.project.entity.lexicon.SupervisionStateEnum;
import com.yuexunit.page.PageCriteria;
import com.yuexunit.page.PageList;

/**
 * @ClassName: BulkstockInventoryService
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @author chenxy
 * @date 2015年09月23日 18:56:17
 */
public interface ContainerInventoryService {

	public Long createContainerInventory(ContainerInventoryEntity entity);

	public void updateContainerInventory(ContainerInventoryEntity entity);

	public void renovateContainerInventory(ContainerInventoryEntity persist);

	public void disableContainerInventory(Long inventoryId);

	public void deleteContainerInventory(Long inventoryId);

	public ContainerInventoryEntity inquireContainerInventory(Long inventoryId);

	/** 根据理货任务中的箱号查询货箱明细 */
	public ContainerInventoryEntity inquireTallyingContainerInventory(Long tallyingId, String caseNumber);

	/** 根据收货通知中的箱号查询货箱明细 */
	public ContainerInventoryEntity inquireRecieveNoticeContainerInventory(Long recieveNoticeId, String caseNumber);

	/** 查询理货任务中的货箱 */
	public List<ContainerInventoryEntity> inquireTallyingContainerInventoryList(Long tallyingId);

	/** 获取监管确认单下的货箱 */
	public List<ContainerInventoryEntity> inquireSupervisionConfirmationContainerInventoryList(Long confirmationId);

	/** 查询运输通知中的货箱 */
	public List<ContainerInventoryEntity> inquireTransportContainerInventoryList(Long transportNoticeId);

	/** 查询指派配送的通知货箱 */
	public List<ContainerInventoryEntity> inquireDeliveryNoticeContainerInventoryList(Long deliveryNoticeId);

	/** 查询指定提货货箱 */
	public List<ContainerInventoryEntity> inquirePickupContainerInventoryList(Long pickupId);

	/** 查询配送任务中的货箱 */
	public List<ContainerInventoryEntity> inquireDeliveryContainerInventoryList(Long deliveryId);

	/** 查询配送任务中的货箱 */
	public List<ContainerInventoryEntity> inquireDeliveryContainerInventoryListByCondition(Long deliveryId, String caseNumber, String waybillNumber);

	/** 查询放款通知的货箱 */
	public List<ContainerInventoryEntity> inquireLoanNoticeContainerInventoryList(Long loanNoticeId);
	
	public List<ContainerInventoryEntity> inquireContainerInventoryListByLocationId(String locationId);
	
	/** 查询放款通知的货箱ID */
	public List<Long> inquireLoanNoticeContainerInventoryIdList(Long loanNoticeId);

	/** 查询指定ID的货箱 */
	public List<ContainerInventoryEntity> inquireContainerInventoryList(Long[] inventoryIds);

	/** 查询指待提货的的货箱 */
	public List<ContainerInventoryEntity> inquireContainerInventoryList(Long logisticsCompanyInfoId);
	
	/** 查询计息日期之后的货箱 */
	public List<ContainerInventoryEntity> inquireContainerInventoryList(Long financeId, Date minValueDate);

	/** 根据融资ID查询货箱 */
	public List<ContainerInventoryEntity> inquireEffectiveContainerInventoryList(Long financeId);

	/** 查询未解除监管的正常货箱 */
	public List<ContainerInventoryEntity> inquireUnSupervisionInventoryList(Long financeId);
	
	/** 查询未提货申请的正常货箱 */
	public List<ContainerInventoryEntity> inquireUnPickupInventoryList();

	/** 根据货箱状态查询货箱列表(提前/正常/赎货/待处置) */
	public PageList<ContainerInventoryEntity> inquireContainerInventoryPageList(String enterpriseName, Long[] inventoryIds, Long financeId, String tallyingNumber, Integer inventoryState, SupervisionStateEnum[] supervisionState, String caseNumber, Long loanNoticeId, PageCriteria page);
	
	public PageList<ContainerInventoryEntity> inquireContainerInventoryPageLists(List<Long> financeIds, String enterpriseName, Long[] inventoryIds, Long financeId, String tallyingNumber, Integer inventoryState, SupervisionStateEnum[] supervisionState, String caseNumber, Long loanNoticeId, String financeNumber,String bulkstockName,PageCriteria page);
	
	public List<ContainerInventoryEntity> inquireContainerInventoryList(List<Long> financeIds, Long enterpriseId, String financeNumber, String bulkstockName, String warehouseName);

	/** 查询入库单列表 */
	public List<ContainerInventoryEntity> inquireInboundList();
	
	/** 查询待运输的货箱(运输通知单) */
	public List<ContainerInventoryEntity> inquireWaitTransportContainerInventoryList(Long financeId);

	/** 查询待配送的货箱(放货通知单) */
	public List<ContainerInventoryEntity> inquireWaitDeliveryBulkstockInventoryList(DeliveryNoticeEntity deliveryNotice);

	/** 查询待放款的货箱(放款通知单) */
	public List<ContainerInventoryEntity> inquireWaitLoanNoticeContainerInventoryList(Long financeId);
	
	/** 查询待放款的货箱(放款通知单) */
	public PageList<ContainerInventoryEntity> inquireWaitLoanNoticeContainerInventoryPageList(Long financeId, PageCriteria page);

	/** 查询企业异常货箱(企业信息中货物异常) */
	public PageList<ContainerInventoryEntity> inquireAbnormalContainerInventoryPageList(Long enterpriseId, PageCriteria page);

	/** 扫描理货员的待理货铅封号货箱 */
	public List<ContainerInventoryEntity> inquireFacingSlipContainerInventoryList(Long clerkId, String facingSlip);

	/** 货箱查询-融资详情中货箱状态 */
	public PageList<ContainerInventoryEntity> inquireContainerInventoryPageList(String financeNumber, String beginDate, String endDate, String waybillNumber, String caseNumber, String enterpriseName, Long financeId, Integer inventoryState, PageCriteria page);

	/** 根据融资编号/运单号/箱号 获取箱列表 */
	public List<ContainerInventoryEntity> inquireContainerInventory(String financeNumber, String waybillNumber, String caseNumber);

	/** 根据运单号,箱号 获取箱信息 */
	public ContainerInventoryEntity inquireContainerInventory(String waybillNumber, String caseNumber);
	
	/** 统计已经监管并分摊融资金额的箱信息（条件:已监管/已解除监管 融资/补货） */
	public List<ContainerInventoryEntity> inquireSupervisionFinanceAmountList(Long financeId);

	/** 查找换箱提货的置换箱列表 */
	public List<ContainerInventoryEntity> inquireExchangeContainerInventoryList(Long exchangePickupId);

	/** 查找补货的新进的箱列表 */
	public List<ContainerInventoryEntity> inquireReplenishContainerInventoryList(Long replenishCreditId);

	/** 获取换箱换货产生的所有箱信息 */
	public List<ContainerInventoryEntity> inquirePickupExchangeContainerInventoryList(Long exchangePickupId);
	
	/** 根据/运单号/箱号 获取融资ID列表 */
	public List<Long> inquireFinanceIdFromContainerInventory(String waybillNumber, String caseNumber);
	
	/** 根据/融资编号/合同序列号  获取融资合同ID列表 */
	public List<Long> inquireFinanceIdFromContainerInventorys(String financeContractNumber, String financeContractSerialNumber);
	
	/** 根据/运单号/箱号 获取提货ID列表 */
	public List<Long> inquirePickupIdFromContainerInventory(String waybillNumber, String caseNumber);
	
	/** 查询指定运单号的货箱 */
	public List<ContainerInventoryEntity> inquireContainerInventoryList(String waybillNumber, Long enterpriseId, Integer type);
}
